Add a portal helper
authorMatthias Clasen <mclasen@redhat.com>
Tue, 5 Jul 2016 00:29:59 +0000 (20:29 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 8 Jul 2016 04:06:14 +0000 (00:06 -0400)
Instead of open-coding checks for sandboxing in multiple
places, add a helper function that caches the information.

https://bugzilla.gnome.org/show_bug.cgi?id=768499

gtk/gtkprivate.c
gtk/gtkprivate.h

index 8f0da6d3b3ea642ac55e970a01d2262f8c12f7c5..02448d7f92a1445947e5180da1e33e78cc9afb1b 100644 (file)
@@ -267,3 +267,27 @@ _gtk_ensure_resources (void)
 
   g_once (&register_resources_once, register_resources, NULL);
 }
+
+gboolean
+gtk_should_use_portal (void)
+{
+  static const char *use_portal = NULL;
+
+  if (G_UNLIKELY (use_portal == NULL))
+    {
+      char *path;
+
+      path = g_build_filename (g_get_user_runtime_dir (), "flatpak-info", NULL);
+      if (g_file_test (path, G_FILE_TEST_EXISTS))
+        use_portal = "1";
+      else
+        {
+          use_portal = g_getenv ("GTK_USE_PORTAL");
+          if (!use_portal)
+            use_portal = "";
+        }
+      g_free (path);
+    }
+
+  return use_portal[0] == '1';
+}
index 7602394675552ea09453c2369107a25b69b84da4..af130cd3f01e7b46a13c97c8a4434381de65bdbc 100644 (file)
@@ -95,6 +95,8 @@ gboolean        _gtk_propagate_captured_event  (GtkWidget       *widget,
 gdouble _gtk_get_slowdown ();
 void    _gtk_set_slowdown (gdouble slowdown_factor);
 
+gboolean gtk_should_use_portal (void);
+
 #ifdef G_OS_WIN32
 void _gtk_load_dll_with_libgtk3_manifest (const char *dllname);
 #endif